import { defineStore } from 'pinia'
import axios from 'axios'

// 配置axios基础URL
const api = axios.create({
  baseURL: 'http://localhost:8121/api'
})

export const useJuejinStore = defineStore('juejin', {
  state: () => ({
    // 当前选中的分类
    currentCategory: '综合',
    // 当前选中的标签页
    currentTab: '推荐',
    // 文章数据
    articles: [],
    // 分类列表
    categories: [],
    // 文章榜
    rankingArticles: [
      'Elx开源升级:XMarkdown...',
      '基于Prompt 的DevOps 与终...',
      'Nginx 正式拥抱现代 JavaScript',
      'Vue Vapor真的没有diff算法...',
      '我差点放弃移动开发(以及是...'
    ],
    // 作者榜
    authors: [
      {
        name: '阿杆',
        title: '公众号「程序员阿杆」',
        avatar: ''
      },
      {
        name: '前端小王子',
        title: 'Web前端工程师 @跨境',
        avatar: ''
      },
      {
        name: '技术探索者',
        title: '全栈开发工程师',
        avatar: ''
      },
      {
        name: 'AI实践者',
        title: '人工智能研究员',
        avatar: ''
      }
    ]
  }),
  
  actions: {
    // 获取分类列表
    async fetchCategories() {
      try {
        const response = await api.get('/categories/list')
        if (response.data.code === 0) {
          const categoryList = response.data.data || []
          // 添加默认分类
          this.categories = [
            { name: '关注', icon: '👥' },
            { name: '综合', icon: '📊', active: true },
            ...categoryList.map(cat => ({
              name: cat.name,
              icon: cat.icon || '📁',
              id: cat.id
            }))
          ]
        }
      } catch (error) {
        console.error('获取分类列表失败:', error)
      }
    },

    // 获取文章列表
     async fetchArticles(categoryId = null) {
       try {
         let url = '/articles/list/page?current=1&size=20'
         if (categoryId) {
           url += `&categoryId=${categoryId}`
         }
         const response = await api.get(url)
         console.log('API响应数据:', response.data) // 添加调试日志
         if (response.data.code === 0) {
           const articleList = response.data.data?.records || []
           console.log('文章列表数据:', articleList) // 添加调试日志
           // 转换数据格式以匹配前端组件，使用ArticleVO的字段名
           this.articles = articleList.map(article => ({
             id: article.id,
             title: article.title,
             description: article.summary || (article.content?.substring(0, 100) + '...'),
             author: article.nickname || '匿名用户', // 使用nickname字段
             views: this.formatCount(article.view_count || 0), // 使用view_count字段
             likes: this.formatCount(article.like_count || 0), // 使用like_count字段
             tags: this.parseTagsFromString(article.tags) || ['技术', '分享'],
             thumbnail: article.thumbnail || 'https://via.placeholder.com/80x80/FF6B6B/FFFFFF?text=📄'
           }))
           console.log('转换后的文章数据:', this.articles) // 添加调试日志
         }
       } catch (error) {
         console.error('获取文章列表失败:', error)
       }
     },

     // 解析标签字符串
     parseTagsFromString(tagsStr) {
       if (!tagsStr) return ['技术']
       try {
         // 如果是JSON字符串，尝试解析
         if (tagsStr.startsWith('[')) {
           return JSON.parse(tagsStr)
         }
         // 如果是逗号分隔的字符串
         if (tagsStr.includes(',')) {
           return tagsStr.split(',').map(tag => tag.trim())
         }
         // 单个标签
         return [tagsStr]
       } catch (error) {
         return ['技术']
       }
     },

     // 获取热门标签
     async fetchHotTags(limit = 10) {
       try {
         const response = await api.get(`/tags/hot?limit=${limit}`)
         if (response.data.code === 0) {
           return response.data.data || []
         }
         return []
       } catch (error) {
         console.error('获取热门标签失败:', error)
         return []
       }
     },

    // 格式化数量显示
    formatCount(count) {
      if (count >= 1000) {
        return Math.floor(count / 1000) + 'k'
      }
      return count.toString()
    },

    // 切换分类
    setCategory(categoryName) {
      this.currentCategory = categoryName
      // 更新分类的激活状态
      this.categories.forEach(cat => {
        cat.active = cat.name === categoryName
      })
      // 根据分类获取文章
      const category = this.categories.find(cat => cat.name === categoryName)
      this.fetchArticles(category?.id)
    },
    
    // 切换标签页
    setTab(tabName) {
      this.currentTab = tabName
    },
    
    // 刷新文章榜
    refreshRanking() {
      // 这里可以添加刷新逻辑
      console.log('刷新文章榜')
    },
    
    // 关注作者
    followAuthor(authorName) {
      console.log(`关注作者: ${authorName}`)
    },
    
    // 签到
    checkIn() {
      console.log('用户签到')
    }
  }
})